When I stopped xend by xend stop command, a domain suspend processing
is frequently failed. This patch solves the problem.
Step to reproduce:
1. xm new XXX on_xend_stop="suspend"
2. xm start XXX
3. xend stop
In the xend stop, if the domain suspend processing is slept by
state_updated.wait() of waitForShutdown(), then the domain suspend
processing is not waked up again because state_updated.notifyAll()
of _stateSet() is not executed.
For the reason, processing of _on_domains_changed() is waited by
domains_lock.acquire() because the domain suspend processing is
keeping domains_lock and sleeping. The domain suspend processing
got domains_lock at cleanup_domains().
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
self.state_updated.acquire()
try:
while self._stateGet() in (DOM_STATE_RUNNING,DOM_STATE_PAUSED):
- self.state_updated.wait()
+ self.state_updated.wait(timeout=1.0)
finally:
self.state_updated.release()